package od.one;

import java.util.Scanner;

/**
 * @author: Shelly
 * @create: 2024-01-29 16:28:16
 * @version: 1.0
 * @describe: 山脉的个数/攀登者
 * 题目描述:山脉的个数(本题分值100)
攀登者喜欢寻找各种地图，并且尝试攀登到最高的山峰。
地图表示为一维数组，数组的索引代表水平位置，数组的元素代表相对海拔高度。其中数组元素0代表地面。
例如: [0,1,2,4,3,1,0,0,1,2,3,1,2,1,0] ,  代表如下图所示的地图, 地图中有两个山脉位置分别为 1,2,3,4,5和8,9,1,11,12,13,最高峰高度分别为4
一个山脉可能有多座山峰(高度大于相邻位置的高度，或在地图边界且高度大于相邻的高度)。
登山者想要知道一张地图中有多少座山峰。
 *
 * 输入描述:
 * 输入为一个整型数组，数组长度大于1。
 *
 * 输出描述:
 * 输出地图中山峰的数量。
 *
 * 用例1
 * 输入：0, 1, 2, 3,2,4
 * 输出：2
 * 说明：元素3和4都是山峰，输出2
 *
 * 用例2
 * 输入：0,1,4,3,1,0,0,1,2,3,1,2,1,0
 * 输出：3
 * 说明山峰所在索引分别为：3，10，12
 */
public class OD02 {
    public static void main(String[] args) {
        // 创建一个Scanner对象来读取用户的输入
        Scanner scanner = new Scanner(System. in);
        // 读取第一个字符串S
        String in = scanner.nextLine();
        String[] arr_str = in.split(",");
        int[] arr = new  int[arr_str.length];
        for (int i = 0; i < arr_str.length; i++) {
            arr[i] = Integer.parseInt(arr_str[i].trim());
        }
        System. out. println(count_peaks(arr));
    }
    public static int count_peaks(int[] hill_map){
          int count = 0; // 初始化计数器为 0
          for(int i = 0; i < hill_map.length; i++){ // 遍历数组 hill_map
             if(i == 0 && hill_map[i] > hill_map[i+1]){ // 如果当前位置在数组的开头, 并且当前元素大于下一个元素
                  count++; // 计数器加一
                 }
             if(i == hill_map. length-1 && hill_map[i] > hill_map[i-1]) { // 如果当前位置在数组的末尾, 并且当前元素大于前一个元素
                 count++; // 计数器加一
             }
             if(i> 0 && i < hill_map. length-1&& hill_map[i] > hill_map[i-1]&&hill_map[i] > hill_map[i+1]){ //如果当前位置不在开头和末尾, 并且当前元素大于前一个元素且大于后一个元素
                 count++; // 计数器加一
             }
          }
          return count; // 返回计数器的值作为结果
    }
}

/*
* 解题思路
* 如果当前元素是数组的第一个元素， 并且大于下一个元素， 或者是数组的最后一个元素， 并且大于前一个元素， 或者既不是第一个也不是最后一个元素， 但大于前一个元素且大于后一个元素， 则将计数器count 加一。
* */